//
//  UIImage+extension.swift
//  weibo
//
//  Created by Limonwei on 15/12/9.
//  Copyright © 2015年 heima. All rights reserved.
//
//抽象一个图片UIImage的分类

import UIKit

extension UIImage {
    
    //启动图 慢慢放大到消失的效果
    
    class  func getLaunchImage() -> UIImage? {
        let dict = NSBundle.mainBundle().infoDictionary
        
        guard let images = dict?["UILaunchImages"] as? [[String: AnyObject]] else {
            return nil
        }
        let screenSize = UIScreen.mainScreen().bounds.size
        
        for imageDict in images {
            
            guard let sizeString = imageDict["UILaunchImageSize"] as? String else {
                
                break
            }
            let size = CGSizeFromString(sizeString)
            
            //对比图片的大小与屏幕的大小
            if CGSizeEqualToSize(screenSize, size){
                
                let image = UIImage(named: (imageDict["UILaunchImageName"] as! String))
                
                return image
            }
        }
        return nil
    }
    
    /**
    // 取到屏幕的图片加载成一个 imageView
    
    let imageView = UIImageView(image: UIImage.getLaunchImage()!)
    
    view.addSubview(imageView)
    
    UIView.animateWithDuration(3, animations: { () -> Void in
    
    // 执行放大并透明
    imageView.transform = CGAffineTransformMakeScale(3, 3)
    imageView.alpha = 0
    
    }) { (_) -> Void in
    imageView.removeFromSuperview()
    }
    */
    
    
    
    //获取当前屏幕的图像  截屏
    
    //返回一个UIImage
    class func ScreenShot() -> UIImage {
        
        let window = UIApplication.sharedApplication().keyWindow!
        
        //开启上下文
        UIGraphicsBeginImageContext(window.size)
        // 参数1: 开启上下文内容范围大小;参数2: 是否是透明; 参数3: 缩放. 0-1 如果为0(实际分辨率大小),  如果为1(点坐标的大小)
        // UIGraphicsBeginImageContextWithOptions(window.size, false, 0)
        
        //将内容渲染到上下文中
        window.drawViewHierarchyInRect(window.bounds, afterScreenUpdates: false)
        
        //取到当前上下文的内容
        let image = UIGraphicsGetImageFromCurrentImageContext()
        
        //关闭上下文
        UIGraphicsEndImageContext()
        
        //返回内容
        return image
    }
    
    
    //把图片等比例缩放指定的宽度  因为图片的尺寸太大,发布的时候会导致内存飙升,所以需要把图片处理一下让其占用的空间变小
    func scaleToWidth(width: CGFloat) -> UIImage {
        
        if size.width < width {
            return self
        }
        
        // 比如传入的图片大小 : width: 1200 ,高度是 400
        // 知道缩放之后的宽度 --> 求出其对应的高度
        // width : 缩放之后的宽度 比如是600
        //求出缩放之后的高度
        let height = width / size.width * size.height
        //计算其大小
        let rect = CGRect(x: 0, y: 0, width: width, height: height)
        
        //开启上下文
        UIGraphicsBeginImageContext(rect.size)
        
        //将图片绘制到上下文
        drawInRect(rect)
        
        //从上下文种获取图片
        let image = UIGraphicsGetImageFromCurrentImageContext()
        
        //关闭上下文
        UIGraphicsEndImageContext()
        
        return image
        
    }
    
    
}






























